@file:JvmName("DoubleExtensions")
package com.example.mytestdemo.extensions

import java.math.BigDecimal
import java.math.RoundingMode
import java.text.DecimalFormat

/**
 * Created on 2020/8/18,@author Zen.
 * E-mail:jyzen@foxmail.com
 * This is ground control to Major Tom.
 * Don't panic.
 */


/**
 * 保留两位小数
 */
fun Double.twoDecimal(): String = DecimalFormat("0.00").format(this)

/**
 * 保留一位小数
 */
fun Double.oneDecimal(): String = DecimalFormat("0.0").format(this)

/**
 * 保留一位小数
 */
fun Double.oneDecimal(roundingMode: RoundingMode): String {
    val df = DecimalFormat("0.#")
    df.roundingMode = roundingMode
    return  df.format(this)
}

/**
 * 格式化价格
 * 加千分号(,) 无效0可去除
 *
 */
fun Double.priceSepara(): String = DecimalFormat(",###.##").format(this)


/**
 * 格式化价格
 * 无效0可去除
 *
 */
fun Double.priceRemoveInvalidZero(): String = DecimalFormat("###.##").format(this)

/**
 * 元转化为分
 * 四舍五入取整
 */
fun Double.priceFormatFen(): Int {
    val bigDecimal = BigDecimal(this * 100)
    return bigDecimal.setScale(0, RoundingMode.HALF_UP).toInt()
}

/**
 * 获取安全Double值
 */
fun Double?.safe(default: Double = 0.0): Double {
    return this ?: default
}